package com.linchaoen.elema.service.impl;

import com.linchaoen.elema.config.CacheKeyManager;
import com.linchaoen.elema.mapper.StoreMapper;
import com.linchaoen.elema.model.entity.Store;
import com.linchaoen.elema.service.StoreService;
import com.linchaoen.elema.utils.BaseCache;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class StoreServiceImpl implements StoreService {

    @Autowired
    private StoreMapper storeMapper;

    @Autowired
    private BaseCache baseCache;

    @Override
    public List<Store> getStoreList() {
        try {
            Object cacheObj = baseCache.getTenMinuteCache().get(CacheKeyManager.INDEX_STORE_KEY, () -> {
                List<Store> storeList = storeMapper.getStoreList();
                return storeList;
            });
            if (cacheObj instanceof List) {
                List<Store> storeList = (List<Store>) cacheObj;
                return storeList;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;

    }

    @Override
    public Store queryStoreById(Integer id) {
        try {
            String key = String.format(CacheKeyManager.SOME_STORE, id);
            Object cacheObj = baseCache.getTenMinuteCache().get(key, () -> {
                Store store = storeMapper.queryStoreById(id);
                return store;
            });
            if (cacheObj instanceof Store) {
                Store store = (Store) cacheObj;
                return store;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

}
